﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using BusinessLogicLayer;
using Entities;


namespace QuanLyTKB_TienDoGD.QuanLyKeHoachGD
{
    public partial class frmThemChiTietKeHoachGiangDay : Office2007Form
    {
        ChiTietKeHoachGiangDayManager _manager; // khai báo thuộc tính _manager
        ChiTietKeHoachGiangDay ct;  // khai báo thuộc tính ct
        frmThemKeHoachGiangDay frmCha;  // khai báo thuộc tính frmCha
        bool _isUpdate; // khai báo thuộc tính _isUpdate
        public string _maQL;    // khai báo thuộc tính _maQL
        public frmThemChiTietKeHoachGiangDay()
        {
            InitializeComponent();
        }

        /// <summary>
        /// phương thức tạo lập với 3 tham số đầu vào
        /// </summary>
        /// <param name="mana"></param>
        /// <param name="frm"></param>
        /// <param name="_ct"></param>
        public frmThemChiTietKeHoachGiangDay(ChiTietKeHoachGiangDayManager mana, frmThemKeHoachGiangDay frm, ChiTietKeHoachGiangDay _ct = null)
            : this()
        {
            _manager = mana;
            ct = _ct;
            _isUpdate = (_ct != null);
            frmCha = frm;
        }

        /// <summary>
        /// sự kiện load form
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmThemKeHoachGiangDay_Load(object sender, EventArgs e)
        {
            LoadAllCBB();
            if (_isUpdate)
            {
                txtMaKeHoach.Text = ct.MaKH;
                cbbLopHoc.SelectedValue = ct.MaLop;
                if (ct.GhepLop == "")
                    cbbGhepLop.SelectedIndex = -1;
                else
                    cbbGhepLop.SelectedValue = ct.GhepLop;
                cbbMonHoc.SelectedValue = ct.MaMH;
                cbbGiaoVien.SelectedValue = ct.MaGV;
                nrudSoTietTLDaDay.Value = Convert.ToInt32(ct.SoTietLTDaDay.ToString());
                nrudSoTietLTConLai.Value = Convert.ToInt32(ct.SoTietLTConLai.ToString());
                nrudSoTietTHDaDay.Value = Convert.ToInt32(ct.SoTietTHDaDay.ToString());
                nrudSoTietTHConLai.Value = Convert.ToInt32(ct.SoTietTHConLai.ToString());
                nrudSoTuanConLai.Value = Convert.ToInt32(ct.SoTuanConLai.ToString());
            }
            txtMaKeHoach.ReadOnly = _isUpdate;
        }

        /// <summary>
        /// xử lý sự  kiện khi nhấn vào button thêm lớp học
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnThemLopHoc_Click(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// xử lý sự  kiện khi nhấn vào button thêm môn học
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnThemMonHoc_Click(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// xử lý sự  kiện khi nhấn vào button thêm giáo viên
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnThemGiaoVien_Click(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// xử lý sự kiện khi nhấn vào button mặc định
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMacDinh_Click(object sender, EventArgs e)
        {
            txtMaKeHoach.ResetText();
            LoadAllCBB();
            nrudSoTietTLDaDay.Value = 0;
            nrudSoTietLTConLai.Value = 0;
            nrudSoTietTHDaDay.Value = 0;
            nrudSoTietTHConLai.Value = 0;
            nrudSoTuanConLai.Value = 0;
        }

        /// <summary>
        /// xử lý sự  kiện khi nhấn vào button lưu
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnLuu_Click(object sender, EventArgs e)
        {
            ct = new ChiTietKeHoachGiangDay();
            ct.MaKH = txtMaKeHoach.Text;
            ct.MaLop = cbbLopHoc.SelectedValue.ToString();
            if (cbbGhepLop.SelectedIndex != -1)
                ct.GhepLop = cbbGhepLop.SelectedValue.ToString();
            else ct.GhepLop = "";
            ct.MaMH = cbbMonHoc.SelectedValue.ToString();
            ct.MaGV = cbbGiaoVien.SelectedValue.ToString();
            ct.SoTietLTDaDay = Convert.ToInt32(nrudSoTietTLDaDay.Value.ToString());
            ct.SoTietLTConLai = Convert.ToInt32(nrudSoTietLTConLai.Value.ToString());
            ct.SoTietTHDaDay = Convert.ToInt32(nrudSoTietTHDaDay.Value.ToString());
            ct.SoTietTHConLai = Convert.ToInt32(nrudSoTietTHConLai.Value.ToString());
            ct.SoTuanConLai = Convert.ToInt32(nrudSoTuanConLai.Value.ToString());
            ct.MaQL = _maQL;

            var result = _manager.Validate(ct);
            if (result.Valid)
            {
                var aresult = _manager.InsertOrUpdate(ct);
                if (aresult.Success)
                {
                    frmCha.ctmLammoi.PerformClick();
                    MessageBox.Show("Thêm hoặc cập nhật kế hoạch thành công.", "Thông báo");
                    btnMacDinh.PerformClick();
                }
                else MessageBox.Show(aresult.GetErrosMessages());
            }
            else MessageBox.Show(result.ToString());
            
        }

        /// <summary>
        /// xử lý sự  kiện khi nhấn vào button thoát
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// phương thức hiển thị tất cả lớp học lên combobox
        /// </summary>
        private void LoadCBBLopHoc()
        {
            List<LopHoc> ds = LopHoc.Repository.GetAll().ToList();
            LopHoc lh = new LopHoc();
            lh.MaLop = "------- All ------";
            ds.Insert(0, lh);
            cbbLopHoc.DataSource = ds;
            cbbLopHoc.DisplayMember = "MaLop";
            cbbLopHoc.ValueMember = "MaLop";
            cbbLopHoc.SelectedIndex = 0;
        }

        /// <summary>
        /// phương thức hiển thị tất cả ghép lớp lên combobox
        /// </summary>
        private void LoadCbbGhepLop()
        {
            List<LopHoc> ds = LopHoc.Repository.GetAll().ToList();
            LopHoc lh = new LopHoc();
            cbbGhepLop.DataSource = ds;
            cbbGhepLop.DisplayMember = "MaLop";
            cbbGhepLop.ValueMember = "MaLop";
            cbbGhepLop.SelectedIndex = -1;
        }

        /// <summary>
        /// phương thức hiển thị tất cả môn học lên combobox
        /// </summary>
        private void LoadCbbMonHoc()
        {
            List<MonHoc> ds = MonHoc.Repository.GetAll().ToList();
            MonHoc mh = new MonHoc();
            mh.TenMH = "------- All ------";
            ds.Insert(0, mh);
            cbbMonHoc.DataSource = ds;
            cbbMonHoc.DisplayMember = "TenMH";
            cbbMonHoc.ValueMember = "MaMH";
            cbbMonHoc.SelectedIndex = 0;

        }

        /// <summary>
        /// phương thức hiển thị tất cả giáo viên lên combobox
        /// </summary>
        public void LoadCbbGiaoVien()
        {
            List<GiaoVien> ds = GiaoVien.Repository.GetAll().ToList();
            GiaoVien gv = new GiaoVien();
            gv.TenGV = "------- All ------";
            ds.Insert(0, gv);
            cbbGiaoVien.DataSource = ds;
            cbbGiaoVien.DisplayMember = "TenGV";
            cbbGiaoVien.ValueMember = "MaGV";
            cbbGiaoVien.SelectedIndex = 0;
        }

        /// <summary>
        /// phương thức hiển thị tất cả lên combobox
        /// </summary>
        public void LoadAllCBB()
        {
            LoadCBBLopHoc();
            LoadCbbGhepLop();
            LoadCbbMonHoc();
            LoadCbbGiaoVien();
        }
        
    }
}
